package com.example.demokotlin

import java.io.IOException


/**
 * SpellBook类
 *
 * @author zhouronghua
 * @time 2021/9/20 9:17 上午
 */
class SpellBook {

    val spells = listOf("Magic Mr Li", "Lay on Hands")

    /**
     * 定义一个半生对象
     */
    companion object {
        @JvmField
        val MAX_SPELL_COUNT = 10

        fun getSpellGreeting() = println("I am the great Grimoire!")

        /**
         * 声明为静态方法，Java可通过SpellBook.getHelloWorld直接访问
         *
         * @author zhouronghua
         * @time 2021/9/20 9:43 上午
         */
        @JvmStatic
        fun getHelloWorld(): String = "这是一个Hello World程序"
    }

    /**
     * Kotlin抛出的异常需要声明，Java才能捕捉编译时异常
     *
     * @author zhouronghua
     * @time 2021/9/20 9:37 上午
     */
    @Throws(IOException::class)
    fun acceptApology() {
        throw IOException("这是一个IO异常")
    }

    /**
     * 将字符串转换为小写然后首字母大写
     *
     * @author zhouronghua
     * @time 2021/9/20 9:46 上午
     */
    val translator = { utterance: String -> println(utterance.toLowerCase().capitalize()) }
}